#ifndef __BLOCK_H__
#define __BLOCK_H__

#include <gl/gl.h>
#include <gl/glut.h>

#include "Drawable.h"
#include "Collidable.h"
#include "CoordF.h"
#include "Plane.h"
#include "Settings.h"

/*
 * Classe: Box
 *  Herda de: Drawable
 *
 *   Caixa usada como base para as paredes e teto
 *
*/

class Box: public Drawable
{
      private:
              Plane sides[6];
              CoordF pos;
              GLfloat width, height, depth;
             
      public:
             enum boxSides { FRONT, LEFT, BACK, RIGHT, TOP, BOTTOM };

             Box ( CoordF pos, GLfloat w, GLfloat h, GLfloat d );
             Box ( CoordF pos, GLfloat w, GLfloat h, GLfloat d, CoordF c );
             Box ( CoordF pos, GLfloat w, GLfloat h, GLfloat d, int c );
             Box ( CoordF pos, GLfloat w, GLfloat h, GLfloat d, const char * tex );
             Box ( CoordF pos, GLfloat w, GLfloat h, GLfloat d, const char * texarray[6] );
             ~Box() {}
             
             void setDimensions ( GLfloat w, GLfloat h, GLfloat d );
             GLfloat getWidth() { return width; }
             GLfloat getHeight() { return height; }
             GLfloat getDepth() { return depth; }

             void setPos ( CoordF newPos );
             CoordF getPos () { return pos; }
             
             void setTex ( const char * tex );
             void setTex ( const char * texarray[6] );

             void setColor ( CoordF c );
             void setColor ( int c );
             
             void draw();
};

#endif
